
#ifndef __DOC_PANEL_BASE_H__
#define __DOC_PANEL_BASE_H__

#include <glib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
#include <gtksourceview/gtksourceview.h>
#include <gdk/gdk.h>

G_BEGIN_DECLS


#define TYPE_DOC_PANEL_BASE (doc_panel_base_get_type ())
#define DOC_PANEL_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DOC_PANEL_BASE, DocPanelBase))
#define DOC_PANEL_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DOC_PANEL_BASE, DocPanelBaseClass))
#define IS_DOC_PANEL_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DOC_PANEL_BASE))
#define IS_DOC_PANEL_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DOC_PANEL_BASE))
#define DOC_PANEL_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DOC_PANEL_BASE, DocPanelBaseClass))

typedef struct _DocPanelBase DocPanelBase;
typedef struct _DocPanelBaseClass DocPanelBaseClass;
typedef struct _DocPanelBasePrivate DocPanelBasePrivate;

struct _DocPanelBase {
	GtkTable parent_instance;
	DocPanelBasePrivate * priv;
	GtkSourceBuffer* source_buff;
	GtkSourceView* source_view;
	GtkButton* close_btn;
};

struct _DocPanelBaseClass {
	GtkTableClass parent_class;
	gboolean (*on_key_press_event) (DocPanelBase* self, DocPanelBase* sender, const GdkEventKey* event);
};


DocPanelBase* doc_panel_base_construct (GType object_type, guint rows, guint columns, gboolean homogeneous, GtkSourceBuffer** source_buff, GtkSourceView** source_view);
DocPanelBase* doc_panel_base_new (guint rows, guint columns, gboolean homogeneous, GtkSourceBuffer** source_buff, GtkSourceView** source_view);
void doc_panel_base_show (DocPanelBase* self);
void doc_panel_base_close (DocPanelBase* self);
gboolean doc_panel_base_on_key_press_event (DocPanelBase* self, DocPanelBase* sender, const GdkEventKey* event);
GType doc_panel_base_get_type (void);


G_END_DECLS

#endif
